package com.fe.class02;

/**
 * @Description 位运算
 * @Author sosuke :-)
 * @Date 2021/12/4 06:54
 */
public class Code05_BitOperation {

    public static void main(String[] args) {
        int a = 92;
        System.out.println(Integer.toBinaryString(a));
        System.out.println("最右侧的1");
        // 最右侧的一，其余位为0
        System.out.println(Integer.toBinaryString(Integer.lowestOneBit(a)));
        // 最右侧的一，其余位为0
        System.out.println(Integer.toBinaryString(a & -a));

        System.out.println("最左侧的1");
        // 最左侧的一，其余位为0
        System.out.println(Integer.toBinaryString(Integer.highestOneBit(a)));

        System.out.println("获取一个数的从右向左第3位（下标从0开始）二进制位");
        // 获取一个数的某个二进制位，比如：从右向左第3位（下标从0开始）的二进制位
        System.out.println((a >> 3) & 1);

        System.out.println("设置一个数的从右向左第5位（下标从0开始）进制位");
        // b的初始值位0，设置b的从右向左第5位（下标从0开始）的二进制位为1
        System.out.println(Integer.toBinaryString(a | (1 << 5)));

    }
}
